home *** CD-ROM | disk | FTP | other *** search
/ Delphi Developer's Kit 1996 / Delphi Developer's Kit 1996.iso / power / vcsdemo / vcsmain.pas < prev   
Pascal/Delphi Source File  |  1995-12-22  |  3KB  |  153 lines

  1. { Richard Hansen
  2.   CompuServe : 70242,3367
  3. }
  4. unit VcsMain;
  5.  
  6. interface
  7.  
  8. uses
  9.   About, Files, Dialogs, VcsIntf, ToolIntf, SysUtils, IniFiles;
  10.  
  11. const
  12.   VCS_ID = 'VCS.DEMO';
  13.   VCS_TRACK_PROJ_ID = 'TRACK PROJECT';
  14.   VCS_MENUNAME = '&VCS Demo';
  15.   VCS_MENUITEM_COUNT = 4;
  16.   VCS_MENUITEMS : Array[0..VCS_MENUITEM_COUNT-1] of String[30] =
  17.     (
  18.      'About',
  19.      '-',
  20.      'Compare Project',
  21.      'Track Current Project'
  22.      );
  23.  
  24.   ABOUT_INDEX = 0;
  25.   COMPARE_INDEX = ABOUT_INDEX + 2;
  26.   TRACK_INDEX = COMPARE_INDEX + 1;
  27.  
  28. type
  29.   TMyVCSClient = class(TIVCSClient)
  30.     constructor Create;
  31.     function GetIDString: string; override;
  32.     procedure ExecuteVerb(Index: Integer); override;
  33.     function GetMenuName: string; override;
  34.     function GetVerb(Index: Integer): string; override;
  35.     function GetVerbCount: Integer; override;
  36.     function GetVerbState(Index: Integer): Word; override;
  37.     procedure ProjectChange; override;
  38.  
  39.     private
  40.       Delphi    : TIToolServices;
  41.       ProjName  : String;
  42.       TrackProj : Boolean;
  43.  
  44.       procedure CompareProject;
  45.       procedure About;
  46.  
  47.     protected
  48.     public
  49.     procedure Init(VCSInterface: TIToolServices);
  50.   end;
  51.  
  52. implementation
  53.  
  54. constructor TMyVCSClient.Create;
  55. begin
  56.   TObject.Create;
  57.   ProjName  := '';
  58.   TrackProj := True;
  59. end;
  60.  
  61. procedure TMyVCSClient.Init(VCSInterface: TIToolServices);
  62. begin
  63.   Delphi := VCSInterface;
  64. end;
  65.  
  66. procedure TMyVCSClient.About;
  67. begin
  68.   try
  69.   AboutBox := TAboutBox.Create(nil);
  70.   AboutBox.ShowModal;
  71.   finally
  72.   AboutBox.Free;
  73.   end;
  74. end;
  75.  
  76. procedure TMyVCSClient.CompareProject;
  77. var
  78.   i : Integer;
  79.  
  80. begin
  81.   try
  82.   FilesDlg := TFilesDlg.Create(nil);
  83.   FilesDlg.Caption := ProjName;
  84.  
  85.   FilesDlg.lstFiles.Items.Add('FORMS = ' + IntToStr(Delphi.GetFormCount));
  86.   for i := 0 to Delphi.GetFormCount - 1 do begin
  87.     FilesDlg.lstFiles.Items.Add(Delphi.GetFormName(i));
  88.   end;
  89.  
  90.   { BUG : This returns one to FEW PAS files! }
  91.   FilesDlg.lstFiles.Items.Add('UNITS = ' + IntToStr(Delphi.GetUnitCount));
  92.   for i := 0 to Delphi.GetUnitCount - 1 do begin
  93.     FilesDlg.lstFiles.Items.Add(Delphi.GetUnitName(i));
  94.   end;
  95.  
  96.   FilesDlg.ShowModal;
  97.   finally
  98.   FilesDlg.Free;
  99.   end;
  100. end;
  101.  
  102. function TMyVCSClient.GetIDString: string;
  103. begin
  104.   Result := VCS_ID;
  105. end;
  106.  
  107. procedure TMyVCSClient.ExecuteVerb(Index: Integer);
  108. begin
  109.   Case Index of
  110.     ABOUT_INDEX: About;
  111.     COMPARE_INDEX : CompareProject;
  112.     TRACK_INDEX : TrackProj := not TrackProj;
  113.   end; {CASE}
  114. end;
  115.  
  116. function TMyVCSClient.GetMenuName: string;
  117. begin
  118.   Result := VCS_MENUNAME;
  119. end;
  120.  
  121. function TMyVCSClient.GetVerb(Index: Integer): string;
  122. begin
  123.   Result := VCS_MENUITEMS[Index];
  124. end;
  125.  
  126. function TMyVCSClient.GetVerbCount: Integer;
  127. begin
  128.   Result := VCS_MENUITEM_COUNT;
  129. end;
  130.  
  131. function TMyVCSClient.GetVerbState(Index: Integer): Word;
  132. begin
  133.   Result := vsEnabled;
  134.  
  135.   Case Index of
  136.     TRACK_INDEX : if TrackProj then Result := Result or vsChecked;
  137.   end; {CASE}
  138. end;
  139.  
  140. procedure TMyVCSClient.ProjectChange;
  141. begin
  142.   { if NewProjName = '' and ProjName <> '' then project is being closed
  143.     if NewProjName <> '' and ProjName = '' then a new project is being opened
  144.   }
  145.   if TrackProj then begin
  146.     ProjName := Delphi.GetProjectName;
  147.     ShowMessage('Project = ' + ProjName);
  148.   end;
  149. end;
  150.  
  151. end.
  152.  
  153.